package lambda;

import lambda.inter.InterfaceFour;
import lambda.inter.InterfaceOne;
import lambda.inter.InterfaceThree;
import lambda.inter.InterfaceTwo;
import lambda.inter.SumInterface;

import java.util.function.Consumer;

public class LambdaLear {
    /**
     * lambda 表达式是箭头函数，左侧是参数，右侧是执行过程
     * lambda 表达式是一个表达式，不是独立执行的语句，类似 a+b 是一个表达式
     * lambda 返回的是一个函数式接口对象（有且只有一个函数被声明）
     *
     */
    public static void main(String[] args) {
        // 1、无参无返回值
        InterfaceOne one = () -> System.out.println("hello");
        one.exec();
        // 2、无参有返回值
        InterfaceThree three = () -> {
            System.out.println("hello world");
            return "ok";
        };
        System.out.println(three.exec());
        // 3、有参无返回值
        InterfaceTwo two = (x, y) -> {
            System.out.println(x+y);
        };
        two.exec(3, 5);
        // 4、有参有返回值
        InterfaceFour four = (x, y) -> {
            System.out.println(x+y);
            return true;
        };
        System.out.println(four.exec(3, 6));



        SumInterface sum = (x, y)->{
            System.out.println(x+y);
        };
        sum.exec(4, 7);

        SumInterface sum1 = new SumInterface() {
            @Override
            public void exec(int a, int b) {
                System.out.println(a+b);
            }
        };
        sum.exec(4, 7);

        Consumer<Integer> integerConsumer = (x)-> {
            System.out.println(x+10);
        };
        integerConsumer.accept(20);
    }
}
